home *** CD-ROM | disk | FTP | other *** search
Text File | 1996-07-13 | 2.2 KB | 85 lines | [TEXT/ds30] |
- declare procedure sysreorg(dbname, owner, tname)
- argument objname dbname, owner = "System", tname;
- {
- cursor CntCur;
- integer BeforeCnt, AfterCnt;
- varchar string;
-
- string = "select count(*) Cnt from " + dbname + "!" + owner + "." + tname + " into CntCur;";
- execute string;
- fetch of CntCur;
- BeforeCnt = CntCur->Cnt;
-
- print "Reorganizing " + varchar BeforeCnt + " row/s of " + tname + "...";
- execute "reorg table " + dbname + "!" + owner + "." + tname + ";";
-
- execute string;
- fetch of CntCur;
- AfterCnt = CntCur->Cnt;
- if (BeforeCnt != AfterCnt)
- print BeforeCnt - AfterCnt, "rows lost!";
- }
- end procedure sysreorg;
-
- declare procedure reorgall(db)
- argument varchar db = $null;
- {
- cursor dbs, tabs;
- varchar fullname;
- objname dbname;
- integer BeforeCnt, AfterCnt;
-
- if (db is not null)
- db = $toupper(db);
-
- describe open databases into dbs;
- for each dbs
- {
- dbname = dbs->alias;
- close database :dbname;
- }
- describe databases into dbs;
- for each dbs
- {
- if (db is not null and db != $toupper(dbs->name))
- continue;
- fullname = dbs->name;
- print "Reorganizing system tables of database " + fullname + ".";
- open database :fullname;
- sysreorg(dbs->name,, "SysUsers");
- sysreorg(dbs->name,, "SysMembers");
- sysreorg(dbs->name,, "SysDataTypes");
- sysreorg(dbs->name,, "SysObjects");
- sysreorg(dbs->name,, "SysDomains");
- sysreorg(dbs->name,, "SysDomainComps");
- sysreorg(dbs->name,, "SysTables");
- sysreorg(dbs->name,, "SysColumns");
- sysreorg(dbs->name,, "SysColumnComps");
- sysreorg(dbs->name,, "SysKeys");
- sysreorg(dbs->name,, "SysReferences");
- sysreorg(dbs->name,, "SysDefaults");
- sysreorg(dbs->name,, "SysRules");
- sysreorg(dbs->name,, "SysViews");
- sysreorg(dbs->name,, "SysIndices");
- sysreorg(dbs->name,, "SysIndexComps");
- sysreorg(dbs->name,, "SysVariables");
- sysreorg(dbs->name,, "SysPrivileges");
- sysreorg(dbs->name,, "SysColumnPrivs");
-
- describe tables into tabs;
- if ($rows(tabs) > 0)
- print "Reorganizing user tables of database " + fullname + ".";
- for each tabs
- {
- sysreorg(dbs->name, tabs->owner, tabs->name);
- }
- dbname = dbs->name;
- close database :dbname;
- }
- }
- end procedure reorgall;
-
- print 'Enter: reorgall("<dbname>");';
- print 'to reorganize a database called <dbname>.';
-
-